home *** CD-ROM | disk | FTP | other *** search
- package sun.management;
-
- import java.io.BufferedInputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.InputStream;
- import java.lang.management.ManagementFactory;
- import java.lang.reflect.Method;
- import java.text.MessageFormat;
- import java.util.MissingResourceException;
- import java.util.Properties;
- import java.util.ResourceBundle;
- import javax.management.remote.JMXConnectorServer;
- import sun.management.jmxremote.ConnectorBootstrap;
- import sun.management.snmp.AdaptorBootstrap;
- import sun.misc.VMSupport;
-
- public class Agent {
- private static Properties mgmtProps;
- private static ResourceBundle messageRB;
- private static final String CONFIG_FILE = "com.sun.management.config.file";
- private static final String SNMP_PORT = "com.sun.management.snmp.port";
- private static final String JMXREMOTE = "com.sun.management.jmxremote";
- private static final String JMXREMOTE_PORT = "com.sun.management.jmxremote.port";
- private static final String ENABLE_THREAD_CONTENTION_MONITORING = "com.sun.management.enableThreadContentionMonitoring";
- private static final String LOCAL_CONNECTOR_ADDRESS_PROP = "com.sun.management.jmxremote.localConnectorAddress";
-
- public static void premain(String var0) throws Exception {
- agentmain(var0);
- }
-
- public static void agentmain(String var0) throws Exception {
- if (var0 == null || var0.length() == 0) {
- var0 = "com.sun.management.jmxremote";
- }
-
- Properties var1 = new Properties();
- if (var0 != null) {
- String[] var2 = var0.split(",");
-
- for(int var3 = 0; var3 < var2.length; ++var3) {
- String[] var4 = var2[var3].split("=");
- if (var4.length >= 1 && var4.length <= 2) {
- String var5 = var4[0];
- String var6 = var4.length == 1 ? "" : var4[1];
- if (var5 != null && var5.length() > 0) {
- if (var5.startsWith("com.sun.management.")) {
- var1.setProperty(var5, var6);
- } else {
- error("agent.err.invalid.option", var5);
- }
- }
- }
- }
- }
-
- Properties var7 = new Properties();
- String var8 = var1.getProperty("com.sun.management.config.file");
- readConfiguration(var8, var7);
- var7.putAll(var1);
- startAgent(var7);
- }
-
- private static void startAgent(Properties var0) throws Exception {
- String var1 = var0.getProperty("com.sun.management.snmp.port");
- String var2 = var0.getProperty("com.sun.management.jmxremote");
- String var3 = var0.getProperty("com.sun.management.jmxremote.port");
- String var4 = var0.getProperty("com.sun.management.enableThreadContentionMonitoring");
- if (var4 != null) {
- ManagementFactory.getThreadMXBean().setThreadContentionMonitoringEnabled(true);
- }
-
- try {
- if (var1 != null) {
- AdaptorBootstrap.initialize(var1, var0);
- }
-
- if (var2 != null || var3 != null) {
- if (var3 != null) {
- ConnectorBootstrap.initialize(var3, var0);
- }
-
- Properties var5 = VMSupport.getAgentProperties();
- if (var5.get("com.sun.management.jmxremote.localConnectorAddress") == null) {
- JMXConnectorServer var6 = ConnectorBootstrap.startLocalConnectorServer();
- String var7 = var6.getAddress().toString();
- var5.put("com.sun.management.jmxremote.localConnectorAddress", var7);
-
- try {
- ConnectorAddressLink.export(var7);
- } catch (Exception var9) {
- warning("agent.err.exportaddress.failed", var9.getMessage());
- }
- }
- }
- } catch (AgentConfigurationError var10) {
- error(var10.getError(), var10.getParams());
- } catch (Exception var11) {
- error(var11);
- }
-
- }
-
- public static Properties loadManagementProperties() {
- Properties var0 = new Properties();
- String var1 = System.getProperty("com.sun.management.config.file");
- readConfiguration(var1, var0);
- var0.putAll(System.getProperties());
- return var0;
- }
-
- public static synchronized Properties getManagementProperties() {
- if (mgmtProps == null) {
- String var0 = System.getProperty("com.sun.management.config.file");
- String var1 = System.getProperty("com.sun.management.snmp.port");
- String var2 = System.getProperty("com.sun.management.jmxremote");
- String var3 = System.getProperty("com.sun.management.jmxremote.port");
- if (var0 == null && var1 == null && var2 == null && var3 == null) {
- return null;
- }
-
- mgmtProps = loadManagementProperties();
- }
-
- return mgmtProps;
- }
-
- private static void readConfiguration(String var0, Properties var1) {
- if (var0 == null) {
- String var2 = System.getProperty("java.home");
- if (var2 == null) {
- throw new Error("Can't find java.home ??");
- }
-
- StringBuffer var3 = new StringBuffer(var2);
- var3.append(File.separator).append("lib");
- var3.append(File.separator).append("management");
- var3.append(File.separator).append("management.properties");
- var0 = var3.toString();
- }
-
- File var21 = new File(var0);
- if (!var21.exists()) {
- error("agent.err.configfile.notfound", var0);
- }
-
- FileInputStream var22 = null;
-
- try {
- var22 = new FileInputStream(var21);
- BufferedInputStream var4 = new BufferedInputStream(var22);
- var1.load(var4);
- } catch (FileNotFoundException var17) {
- error("agent.err.configfile.failed", var17.getMessage());
- } catch (IOException var18) {
- error("agent.err.configfile.failed", var18.getMessage());
- } catch (SecurityException var19) {
- error("agent.err.configfile.access.denied", var0);
- } finally {
- if (var22 != null) {
- try {
- ((InputStream)var22).close();
- } catch (IOException var16) {
- error("agent.err.configfile.closed.failed", var0);
- }
- }
-
- }
-
- }
-
- public static void startAgent() throws Exception {
- String var0 = System.getProperty("com.sun.management.agent.class");
- if (var0 == null) {
- Properties var10 = getManagementProperties();
- if (var10 != null) {
- startAgent(var10);
- }
-
- } else {
- String[] var1 = var0.split(":");
- if (var1.length < 1 || var1.length > 2) {
- error("agent.err.invalid.agentclass", "\"" + var0 + "\"");
- }
-
- String var2 = var1[0];
- String var3 = var1.length == 2 ? var1[1] : null;
- if (var2 == null || var2.length() == 0) {
- error("agent.err.invalid.agentclass", "\"" + var0 + "\"");
- }
-
- if (var2 != null) {
- try {
- Class var4 = ClassLoader.getSystemClassLoader().loadClass(var2);
- Method var11 = var4.getMethod("premain", String.class);
- var11.invoke((Object)null, var3);
- } catch (ClassNotFoundException var6) {
- error("agent.err.agentclass.notfound", "\"" + var2 + "\"");
- } catch (NoSuchMethodException var7) {
- error("agent.err.premain.notfound", "\"" + var2 + "\"");
- } catch (SecurityException var8) {
- error("agent.err.agentclass.access.denied");
- } catch (Exception var9) {
- String var5 = var9.getCause() == null ? var9.getMessage() : var9.getCause().getMessage();
- error("agent.err.agentclass.failed", var5);
- }
- }
-
- }
- }
-
- public static void error(String var0) {
- String var1 = getText(var0);
- System.err.print(getText("agent.err.error") + ": " + var1);
- throw new RuntimeException(var1);
- }
-
- public static void error(String var0, String[] var1) {
- if (var1 != null && var1.length != 0) {
- StringBuffer var2 = new StringBuffer(var1[0]);
-
- for(int var3 = 1; var3 < var1.length; ++var3) {
- var2.append(" " + var1[var3]);
- }
-
- error(var0, var2.toString());
- } else {
- error(var0);
- }
-
- }
-
- public static void error(String var0, String var1) {
- String var2 = getText(var0);
- System.err.print(getText("agent.err.error") + ": " + var2);
- System.err.println(": " + var1);
- throw new RuntimeException(var2);
- }
-
- public static void error(Exception var0) {
- var0.printStackTrace();
- System.err.println(getText("agent.err.exception") + ": " + var0.toString());
- throw new RuntimeException(var0);
- }
-
- public static void warning(String var0, String var1) {
- System.err.print(getText("agent.err.warning") + ": " + getText(var0));
- System.err.println(": " + var1);
- }
-
- private static void initResource() {
- try {
- messageRB = ResourceBundle.getBundle("sun.management.resources.agent");
- } catch (MissingResourceException var1) {
- throw new Error("Fatal: Resource for management agent is missing");
- }
- }
-
- public static String getText(String var0) {
- if (messageRB == null) {
- initResource();
- }
-
- try {
- return messageRB.getString(var0);
- } catch (MissingResourceException var2) {
- return "Missing management agent resource bundle: key = \"" + var0 + "\"";
- }
- }
-
- public static String getText(String var0, String... var1) {
- if (messageRB == null) {
- initResource();
- }
-
- String var2 = messageRB.getString(var0);
- if (var2 == null) {
- var2 = "missing resource key: key = \"" + var0 + "\", " + "arguments = \"{0}\", \"{1}\", \"{2}\"";
- }
-
- return MessageFormat.format(var2, (Object[])var1);
- }
- }
-